<?php

class FuncionalidadesController extends BaseController {
	
	public function indexAction() {
		
		echo $this->view->menu = 'Menu';
	}
	
	public function editarAction(){
    	$id = $this->_getParam('id');
    	
    	$model = new Application_Model_Funcionalidade();
    	$menu = $model->fetchAll("id = $id")->current();
        
    	$this->view->form = new Form_Funcionalidades_Funcao();
    	$dados = $menu->toArray();
    	$this->view->form->populate($dados);
    	
    	$this->view->form->funcionalidade_id->addMultiOptions($model->getArrayFuncionalidade())->setValue($menu->funcionalidade_id);
		$this->view->form->descricao->setValue($menu['descricao']);
		$this->view->id = $id;
		
    	if ($this->getRequest()->isPost()){
           $this->_gravar($this->getRequest()->getParams());
       	}
     
	}
	
	public function _gravar($parametros){
		if ($this->getRequest()->getPost() && $this->view->form->isValid($parametros)){
			$perfilModel = new Application_Model_Funcionalidade();
			$perfil = $perfilModel->find($this->_getParam('id'))->current();
			$perfil->setFromArray($parametros);
			$perfil->save();
		    $this->_helper->redirector('index','funcionalidades');
			
		}
	}
	
	public function cadastrarAction(){
			    	
	    	$model = new Application_Model_Funcionalidade();
	    	        
	    	$this->view->form = new Form_Funcionalidades_Funcao();
	    	$this->view->form->funcionalidade_id->addMultiOptions($model->getArrayFuncionalidade());
	    				
					
			if ($this->getRequest()->getPost() && $this->view->form->isValid($this->_getAllParams()) ){
			
				$resultado = $this->_salvar($this->_getAllParams());
				if($resultado === true) {
					$this->_helper->flashMessenger('Função salva com sucesso');
					$this->_helper->redirector('index','funcionalidades');	
				}
				else{
					
					$this->_helper->flashMessenger($resultado);
					$this->_helper->redirector('cadastrar','funcionalidades');
				}
			}
	}
	private function _salvar($array){
			if($this->_checarFuncaoDuplicado($array['descricao'])){
				return 'Falha ao Cadastrar. Esta Função já está em uso.';
			}
			$funcaoModel = new Application_Model_Funcionalidade();
			$funcao = $funcaoModel->createRow ($this->_getAllParams());
			
			$funcao->save();
			return true;
	}
	private function _checarFuncaoDuplicado($funcao){
			$rowset = $this->_getModel()->fetchAll("descricao = '$funcao'");
			if (count($rowset) > 0){
			return true;
			}
			return false;
	}
	private function _getModel(){
		return new Application_Model_Funcionalidade ();
	}
	public function excluirAction(){
			$id = $this->_getParam('id');
			$model = new Application_Model_Funcionalidade();
			$model->getAdapter()->beginTransaction();
					try {
						$perfil = $model->fetchAll("id = $id")->current();
				    	$perfil->delete();
				    	$this->_helper->flashMessenger('Função Excluída com sucesso');
				    	$model->getAdapter()->commit();
						$this->_helper->redirector('index','funcionalidades');	
					} catch (Exception $e) {
	    		$this->_helper->flashMessenger('Houve um erro na exclusão');
	    		$model->getAdapter()->rollBack();
	    	}
	}

}

